C 语言简易日志库
1#ifndef LOG_H
2#define LOG_H
3
4#include <stdio.h>
5
6
7// Log Tag
8#ifdef __linux__
9 #define LOG_TAG_VERBOSE "\033[97;1mVERBOSE\033[0m"
10 #define LOG_TAG_DEBUG "\033[96;1mDEBUG\033[0m"
11 #define LOG_TAG_INFO "\033[94;1mINFO\033[0m"
12 #define LOG_TAG_WARNING "\033[93;1mWARNING\033[0m"
13 #define LOG_TAG_ERROR "\033[91;1mERROR\033[0m"
14#else
15 #define LOG_TAG_VERBOSE "VERBOSE"
16 #define LOG_TAG_DEBUG "DEBUG"
17 #define LOG_TAG_INFO "INFO"
18 #define LOG_TAG_WARNING "WARNING"
19 #define LOG_TAG_ERROR "ERROR"
20#endif
21
22
23// enum of LOG_LEVEL
24#define LOG_LEVEL_ERROR 0
25#define LOG_LEVEL_WARNING 1
26#define LOG_LEVEL_INFO 2
27#define LOG_LEVEL_DEBUG 3
28#define LOG_LEVEL_VERBOSE 4
29
30
31// Default LOG_LEVEL
32#ifndef LOG_LEVEL
33 #define LOG_LEVEL LOG_LEVEL_INFO
34#endif // LOG_LEVEL
35
36
37#if LOG_LEVEL >= LOG_LEVEL_VERBOSE
38 #define VERBOSE(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_VERBOSE "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
39#else
40 #define VERBOSE(fmt, ...)
41#endif
42
43#if LOG_LEVEL >= LOG_LEVEL_DEBUG
44 #define DEBUG(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_DEBUG "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
45#else
46 #define DEBUG(fmt, ...)
47#endif
48
49#if LOG_LEVEL >= LOG_LEVEL_INFO
50 #define INFO(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_INFO "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
51#else
52 #define INFO(fmt, ...)
53#endif
54
55#if LOG_LEVEL >= LOG_LEVEL_WARNING
56 #define WARNING(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_WARNING "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
57#else
58 #define WARNING(fmt, ...)
59#endif
60
61#if LOG_LEVEL >= LOG_LEVEL_ERROR
62 #define ERROR(fmt, ...) fprintf(stderr, "[%s:%d][" LOG_TAG_ERROR "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
63#else
64 #define ERROR(fmt, ...)
65#endif
66
67#endif // LOG_H